Copyright(C) 1994 Terumasa KODAKA , Takeshi KONO
■グラフィックBIOS[ノーマル]
グラフィックBIOSの概要
ノーマルモードでは、グラフィック描画を行うためのグラフィックBIOSと
グラフLIOをROM内プログラムが用意している。
グラフィックBIOSは、標準グラフィックスモードのモノクロと8色カラーに
対応している。主にグラフィックGDCで描画を行う機能を含んでいる。
グラフLIOは、標準グラフィックスモードのモノクロ・8色カラー・
16色カラーに対応して、グラフィックBIOSよりも複雑な描画機能をサポート
している。
拡張グラフィックスモードやH98 256色モードは、グラフィックBIOS・
グラフLIOではサポートしていない。
グラフィックBIOS・グラフLIOは、テクニカルデータブックに詳細な説明が
ある。
本書ではグラフィックBIOSは最低限の解説にとどめ、グラフLIOは割愛
した。ただし、グラフィックBIOSの中の非公開情報や注意点などがある
一部のファンクションについては詳しく触れた。
表 [PC-9800 ノーマルモードのグラフィックモード]
ノーマル---+---標準グラフィックス---+---モノクロ-----+---640x200ドット*
| | ^---640x400ドット
| +---8色カラー----+---640x200ドット*
| | ^---640x400ドット
| +---16色カラー---+---640x200ドット*
| ^---640x400ドット
+---拡張グラフィックス(256色)-------------+---640x400ドット
| ^---640x480ドット
+---H98 256色-----------------------------+---640x200ドット
^---640x400ドット
*印のモードのみ、標準ディスプレイ(CRT解像度=640x200,水平走査周波数=
15.98kHz,垂直同期周波数=61.47HzのPC-8001用ディスプレイ)で表示可能
・「標準グラフィックス」は、PC-9800ノーマルモードで必須サポートの
グラフィックシステム。
ただし、PC-9801初代・E・F・Mは16色カラーの機能がない。
PC-9801U・VM2・VFは16色機能用VRAMがオプション。
・「拡張グラフィックス」は、PC-9821(Bf・Bp・Bs・Be・Tsを除く)でサポート。
・「H98 256色」は、PC-H98 + PC-H98-E02(256色ボード)でサポート
(PC-H98 model80・90・105, PC-H98T model2Cは256色ボードを標準実装)。
・PC-98GSの「GS拡張グラフィックス」は、「標準グラフィックス」と共存
可能な独立したグラフィックシステムなので、ここには含めない。
INT 18h - Function 40h
分類 GRAPH BIOS
名前 グラフィック画面の表示開始
対象 ノーマル
入力 AH=40h
出力 なし
解説 o グラフィック画面の表示をONにする。起動時は表示OFF。
o 拡張グラフィックスモード、PC-H98 256色モードでも有効。
u このファンクションは、次のVSYNC発生を待って実際の処理を実行
する。VSYNCの発生タイミングを知るために、GDCステータス(I/O 00A0h)を
チェックしている。このため、INT 18h - Function 0Ahなどのように
他ルーチンが利用中のVSYNC割り込みが停止することはない。
関連 0000:054Ch bit 7
INT 18h - Function 41h
INT 18h - Function 41h
分類 GRAPH BIOS
名前 グラフィック画面の表示停止
対象 ノーマル
入力 AH=41h
出力 なし
解説 o グラフィック画面の表示をOFFにする。
o 拡張グラフィックスモード、PC-H98 256色モードでも有効。
関連 0000:054Ch bit 7
INT 18h - Function 40h
INT 18h - Function 42h
分類 GRAPH BIOS
名前 表示領域の設定
対象 ノーマル + 標準グラフィックスモード
入力 AH=42h
CH=モード設定情報
bit 7,6:VRAM領域(解像度)指定
-------+--------------------+------------------
値 |グラフィック解像度 |備考
-------+--------------------+------------------
11b |640x400 |
10b |640x200(LOWER) |
01b |640x200(UPPER) |起動時設定
-------+--------------------+------------------
bit 5:カラー/モノクロ指定
-------+------------
値 |内容
-------+------------
1 |モノクロ
0 |カラー
-------+------------
bit 4:表示バンク
-------+------------+------------------------------
値 |内容 |備考
-------+------------+------------------------------
1 |バンク1 |PC-9801初代・Uでは指定不可
0 |バンク0 |
-------+------------+------------------------------
bit 3〜0:0000bを設定する(未使用)
出力 なし
解説 o 標準グラフィックスモードのグラフィックモードを設定する。
u 拡張グラフィックスモードで実行した場合の動作は、以下のようになる。
・ディスプレイ周波数 …変化なし
・色数 640x400設定時…変化なし(拡張グラフィックスモードのまま)
640x200設定時…16色モード
ただし、PC-9821初代・Neで、拡張グラフィックスモードの640x480ドット時に
このファンクションを実行したときは無動作になる。内部で水平走査周波数が
31kHzのまま、解像度を640x400ドットに設定しようとして、エラーになるため
である。
u PC-9821(Tsを除く)では、システム共通域0000:0597h bit 1,0にグラフィック
解像度が保存される。そのほかの機種では、このファンクションの設定内容は
システム共通域に保存されない。
関連 0000:0597h bit 1,0
INT 18h - Function 43h
分類 GRAPH BIOS
名前 パレットレジスタの設定
対象 ノーマル + 標準グラフィックスモード + モノクロ・8色カラー
入力 AH=43h
DS:BX=UCWの先頭アドレス
<UCWのGBCPC(オフセット04h,サイズ4バイト)の内容>
--------+---------+-------------------------------
アドレス|ビット |内容
--------+---------+-------------------------------
DS:BX+4 |bit 7〜4 |パレットレジスタ6
|bit 3〜0 |パレットレジスタ7
--------+---------+-------------------------------
DS:BX+5 |bit 7〜4 |パレットレジスタ4
|bit 3〜0 |パレットレジスタ5
--------+---------+-------------------------------
DS:BX+6 |bit 7〜4 |パレットレジスタ2
|bit 3〜0 |パレットレジスタ3
--------+---------+-------------------------------
DS:BX+7 |bit 7〜4 |パレットレジスタ0
|bit 3〜0 |パレットレジスタ1
--------+---------+-------------------------------
各パレットレジスタのビット割り当て
--------+------------
ビット |内容
--------+------------
bit 7,3 |0を設定
bit 6,2 |G
bit 5,1 |R
bit 4,0 |B
--------+------------
出力 なし
解説 o 8色カラーモードのカラーパレットの設定、およびモノクロモードの
表示画面の合成方法の指定を行う。
o グラフィックBIOSでは16色モードのパレット指定はできない。
関連 I/O 00A8h
I/O 00AAh
I/O 00ACh
I/O 00AEh
INT 18h - Function 44h
分類 GRAPH BIOS
名前 ボーダーカラーの設定
対象 ノーマル + 標準ディスプレイ
入力 AH=44h
DS:BX=UCWの先頭アドレス
<UCWのGBBCC(オフセット01h,サイズ1バイト)の内容>
--------+---------+-------------------------------
アドレス|ビット |ボーダーカラーの色
--------+---------+-------------------------------
DS:BX+1 |bit 7 |0を設定
|bit 6 |GREEN
|bit 5 |RED
|bit 4 |BLUE
|bit 3〜0 |0000bを設定
--------+---------+-------------------------------
出力 なし
解説 o 標準ディスプレイ使用時のボーダーカラーを設定する。
u 水平走査周波数24kHzのときは、ディスプレイの描画可能領域の周囲に
色がつく。本来のボーダーカラーのようにディスプレイの外周まで
完全に色がつくわけではない。また、一部のモニタ(SONY GVM-1411など)では
水平走査周波数24kHzのときボーダーカラーを指定すると表示色が異常になる。
関連 I/O 006Ch
INT 18h - Function 45h
分類 GRAPH BIOS
名前 ドットの書き込み
対象 ノーマル + 標準グラフィックスモード + モノクロ・8色カラー
入力 AH=45h
CH=画面の指定
bit 7,6:VRAM領域指定
-------+------------------
値 |グラフィック解像度
-------+------------------
10b |640x400
01b |640x200(UPPER)
00b |640x200(LOWER)
-------+------------------
bit 5,4:描画プレーン
-------+------------
値 |内容
-------+------------
11b |プレーン1,2,3
10b |プレーン3
01b |プレーン2
00b |プレーン1
-------+------------
bit 3〜0:0000bを設定する(未使用)
ES=描画パターンバッファのセグメントアドレス
DS:BX=UCWの先頭アドレス
出力 なし
解説 o 指定された画面に対して、ある長さのドットパターンの書き込みを行う。
o UCWの詳細はテクニカルデータブックBIOS編参照。
関連
INT 18h - Function 46h
分類 GRAPH BIOS
名前 ドットの読み出し
対象 ノーマル + 標準グラフィックスモード + モノクロ・8色カラー
入力 AH=46h
CH=画面の指定(INT 18h - Function 45hと同じ)
ES=読み込みバッファ(1〜3)のセグメントアドレス
DS:BX=UCWの先頭アドレス
出力 なし
解説 o 指定された画面から、ある長さのドットパターンの読み出しを行う。
o UCWの詳細はテクニカルデータブックBIOS編参照。
関連
INT 18h - Function 47h
分類 GRAPH BIOS
名前 直線,矩形の描画
対象 ノーマル + 標準グラフィックスモード + モノクロ・8色カラー
入力 AH=47h
CH=画面の指定(INT 18h - Function 45hと同じ)
DS:BX=UCWの先頭アドレス
出力 なし
解説 o 指定された画面に対して、直線または矩形の書き込みを行う。
GDCで描画する。
o UCWの詳細はテクニカルデータブックBIOS編参照。
関連
INT 18h - Function 48h
分類 GRAPH BIOS
名前 円弧の描画
対象 ノーマル + 標準グラフィックスモード + モノクロ・8色カラー
入力 AH=48h
CH=画面の指定(INT 18h - Function 45hと同じ)
DS:BX=UCWの先頭アドレス
出力 なし
解説 o 指定された画面に対して、円弧の書き込みを行う。
GDCで描画するため、楕円の一部となるような円弧を描くことはできない。
o UCWの詳細はテクニカルデータブックBIOS編参照。
関連
INT 18h - Function 49h
分類 GRAPH BIOS
名前 グラフィック文字の描画
対象 ノーマル + 標準グラフィックスモード + モノクロ・8色カラー
入力 AH=49h
CH=描画画面の指定(INT 18h - Function 45hと同じ)
DS:BX=UCWの先頭アドレス
出力 なし
解説 o 指定された画面に対して、8×8ドット以下のパターンを書き込む。
8×8ドットよりも大きな領域を、8×8ドット以下のくり返しパターンで
塗り潰すこともできる。
o UCWの詳細はテクニカルデータブックBIOS編参照。
関連
INT 18h - Function 4Ah
分類 GRAPH BIOS
名前 描画モードの設定
対象 ノーマル + 標準グラフィックスモード
入力 AH=4Ah
CH=描画タイミングの設定
16h=フラッシュレス描画
06h=フラッシュ描画
出力 なし
解説 o グラフィックGDCに対して、描画タイミングの指定を行う。
PC-9801初代・E・F・M・U・VM2・VFでは、フラッシュ描画に設定すると、
GDCで描画するときチラツキが出る。フラッシュレス描画では、
ブランキング期間のみ描画を行うため、チラツキは出ない。
CPUで描画するときには、フラッシュ描画でもチラツキは起らない。
u システム共通域0000:054Dh bit 3に描画タイミングの設定状態が保存される。
u 0000:054Dh bit 4=1の機種(PC-9801初代・E・F・M・U・VM2・VF以外)では、
このファンクションによる設定にかかわらず、常にフラッシュレス描画と
同等の動作をする。
u 0000:054Ch bit 0=1(DIP SW 1-8=ON:拡張グラフィックモード)の場合、
なにも処理を行わない。拡張グラフィックモードのときは、ITFでGDCを
必ずフラッシュ描画モードに設定するため。
o CHの値は、グラフィックGDCにSYNCコマンドを送出する際の
第1パラメータの値そのものである。このため、06h,16h以外の値を
指定してはならない。
関連 0000:054Dh bit 4,3
INT 18h - Function 4Dh
分類 GRAPH BIOS
名前 400ライン時拡張/標準グラフィックスモード選択
Undocumented
対象 PC-9821(Bf・Bp・Bs・Be・Tsを除く) + ノーマル
入力 AH=4Dh
CH=グラフィックスモード
00h=標準グラフィックス(2/8/16色)モード
01h=拡張グラフィックス(256色)モード
出力 なし
解説 o グラフィック解像度640x400表示時の、標準/拡張グラフィックスモードの
選択を行う。
グラフィック解像度640x400表示モードのときのみ有効。その他の
グラフィック解像度ではなにもせずに終了する。
u システム共通域0000:054Dh bit 7が現在のグラフィックスモードを示して
いる。この状態を読み出すBIOSファンクションは存在しない。現在のモードを
読み出す必要があるときは、システム共通域を直接参照する。
u PC-9821初代では、400ライン以外のときに本ファンクションを実行すると、
0000:054Dh bit 2(現在のGDCクロック状態を示すフラグ)が必ず1
(5MHz状態)に設定されてしまう。
PC-9821初代・Af・Ap・As・Ae・Ceで、CH=00h,01h以外の値を指定して実行した
ときも同様の状態になる。
PC-9821Ap2・As2・Cs2・Ce2で、400ラインのときCH=00hで実行したときも
同様の状態になる。
o PC-98GS, PC-9821Bf・Bp・Bs・Be・Tsは本ファンクションをサポートしない。
関連 INT 18h - Function 30h
0000:054Dh bit 7
INT 18h - Function 4Bh,4Ch,4Eh,4Fh
分類 GRAPH BIOS
名前 機能なし
対象 ノーマル
入力 AH=4Bh,4Ch,4Eh,4Fh
出力 なし
解説 o
関連
INT 18h - Function 50〜FFh
分類 GRAPH BIOS
名前 実行禁止
Undocumented
対象 ノーマル
入力 AH=50〜FFh
出力
解説 o AHの範囲チェックなしにディスパッチするため、実行すると暴走する。
関連